layui.define(['table', 'notice', 'upload'], function (exports) {
    var setter = {
        //baseServer: 'http://localhost:8085', // 接口地址，实际项目请换成http形式的地址
        baseServer: '',
        contextPath: '',
        pageTabs: false,   // 是否开启多标签
        cacheTab: true,  // 是否记忆Tab
        defaultTheme: 'theme-my',  // 默认主题
        openTabCtxMenu: true,   // 是否开启Tab右键菜单
        maxTabNum: 20,  // 最多打开多少个tab
        viewPath: 'components', // 视图位置
        viewSuffix: '.html',  // 视图后缀
        reqPutToPost: true,  // req请求put方法变成post
        apiNoCache: true,  // ajax请求json数据不带版本号
        tableName: 'xszp',  // 存储表名
        closeFooter: true, // 是否关闭页脚
        
        /* 获取缓存的token */
        getToken: function () {
            var cache = layui.data(setter.tableName);
            if (cache) return cache.token;
        },
        /* 清除token */
        removeToken: function () {
            layui.data(setter.tableName, {key: 'token', remove: true});
        },
        /* 缓存token */
        putToken: function (token) {
            layui.data(setter.tableName, {key: 'token', value: token});
        },
        /* 当前登录的用户 */
        getUser: function () {
            var cache = layui.data(setter.tableName);
            if (cache) return cache.loginUser;
        },
        /* 缓存user */
        putUser: function (user) {
            layui.data(setter.tableName, {key: 'loginUser', value: user});
        },
        
        /*缓存登录账号信息*/
        putAccountInfo: function(account){
        	layui.data(setter.tableName, {key: 'accountInfo', value: account});
        },
        
        /*获取登录账号信息*/
       getAccountInfo: function(account){
    	   var cache = layui.data(setter.tableName);
    	   if (cache) return cache.accountInfo;
       },
        
       /* 清除登录账号信息 */
       removeAccountInfo: function () {
           layui.data(setter.tableName, {key: 'accountInfo', remove: true});
       },
        
        /* 获取用户所有权限 */
        getUserAuths: function () {
            var auths = [], user = setter.getUser();
            var authorities = user ? user.permissions : [];
            for (var i = 0; i < authorities.length; i++) {
                auths.push(authorities[i]);
            }
            return auths;
        },
        /* ajax请求的header */
        getAjaxHeaders: function (url) {
            var headers = [];
            var token = setter.getToken();
            if (token) headers.push({name: 'Authorization', value: 'Bearer ' + token.access_token});
            return headers;
        },
        /* ajax请求结束后的处理，返回false阻止代码执行 */
        ajaxSuccessBefore: function (res, url, obj) {
            if (res.code === 401) {  // 登录过期退出到登录界面
                setter.removeToken();
                layui.layer.msg('登录过期', {icon: 2, anim: 6, time: 1500}, function () {
                    location.replace('/login.html');
                });
                return false;
            }
            return true;
        },
        /* 路由不存在处理 */
        routerNotFound: function (r) {
            layui.notice.warning({
    			title: '系统提示',
    			message: '路由' + r.path.join('/') + '不存在',
    			position: 'center', // 显示位置
    			transitionIn: 'fadeIn', // 进入动画
    			transitionOut: 'fadeOut', // 退出动画
    			timeout: false, // 消失时间
    			progressBar: false, // 进度条
    			close: false, // 关闭按钮
    			overlay: true, // 遮罩层
    			drag: false, // 滑动关闭
    			displayMode: 2, // 显示模式 0无限制，1同类型存在不显示，2同类型存在先移除
    			buttons: [['<button style="color: #fff;background-color: #1890ff;border-color: #1890ff;">确认</button>', function () {
                		location.replace('/');
                	}]]
    		});
        }
    };
    /* table全局设置 */
    var token = setter.getToken();
    if (token) {
        layui.table.set({
            headers: {'Authorization': 'Bearer ' + token},
            parseData: function(res) {
                if(res.code == 401) {
                	layui.notice.warning({
            			title: '系统提示',
            			message: '登录状态已过期，您可以继续留在该页面，或者重新登录',
            			position: 'center', // 显示位置
            			transitionIn: 'fadeIn', // 进入动画
            			transitionOut: 'fadeOut', // 退出动画
            			timeout: false, // 消失时间
            			progressBar: false, // 进度条
            			close: false, // 关闭按钮
            			overlay: true, // 遮罩层
            			drag: false, // 滑动关闭
            			displayMode: 2, // 显示模式 0无限制，1同类型存在不显示，2同类型存在先移除
            			buttons: [['<button style="background-color: #fff;border: 1px solid #C9C9C9;">取消</button>', function () {
                            	layui.notice.destroy()
                        	}], ['<button style="color: #fff;background-color: #1890ff;border-color: #1890ff;">重新登录</button>', function () {
                        		location.replace('login.html');
                        	}]]
            		});
                }
                return res;
            }
        });
        
        /* upload全局设置 */
        layui.upload.set({
        	headers: {'Authorization': 'Bearer ' + token},
        });
    }
    setter.base_server = setter.baseServer;  // 兼容旧版
    exports('setter', setter);
});
